<?php
    /**
     *  Copyright (c) 2013, dsphinx@plug.gr
     *  All rights reserved.
     *
     *  Redistribution and use in source and binary forms, with or without
     *  modification, are permitted provided that the following conditions are met:
     *   1. Redistributions of source code must retain the above copyright
     *      notice, this list of conditions and the following disclaimer.
     *   2. Redistributions in binary form must reproduce the above copyright
     *      notice, this list of conditions and the following disclaimer in the
     *      documentation and/or other materials provided with the distribution.
     *   3. All advertising materials mentioning features or use of this software
     *      must display the following acknowledgement:
     *      This product includes software developed by the dsphinx.
     *   4. Neither the name of the dsphinx nor the
     *      names of its contributors may be used to endorse or promote products
     *     derived from this software without specific prior written permission.
     *
     *  THIS SOFTWARE IS PROVIDED BY dsphinx ''AS IS'' AND ANY
     *  EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
     *  WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
     *  DISCLAIMED. IN NO EVENT SHALL dsphinx BE LIABLE FOR ANY
     *  DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
     *  (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
     *  LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
     *  ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
     *  (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
     *  SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
     *
     *
     */


    /**
     *  Namespace ${NAMESPACE}
     *  Class Echoc
     *
     *  Responsible to output HTML / Javascript on Client Side
     *
     *
     *  TODO :  metamorphism technique ?
     *
     */
    class Echoc extends Exception
    {
        const     HTML_SCRAMBLER = FALSE; // Scramble HTML code ?
        static $_EOL = "\n";
        static $_EOL_replace = " ";

        /**
         * @param $text
         *
         *  Return  html p tag
         */
        public static function  p($text)
        {
            self::output('<p>' . $text . '</p>');
        }

        public static function __callStatic($name, $arguments)
        {
            // Note: value of $name is case sensitive.
            self::output('<!-- Static Call --> ' . $name . implode(', ', $arguments), '<!-- EOF Static Call --> ');
        }

        /**
         * @param $text
         *
         *  Return Readable or not HTML output
         */
        public static function  output($text)
        {
            if (self::HTML_SCRAMBLER) {
                $text = preg_replace("/\n/", self::$_EOL_replace, $text); // $text = preg_replace("/\n|/\r/"," ",$text);
                $text = trim($text);
            } else
                $text .= self::$_EOL;

            echo ($text);
        }


    }

